振动抑制功能使用说明文档
修订日期 | 修订版本 | 修订内容 | 修订人 |
---|---|---|---|
2025.06.17 | V0.1 | 接口介绍和使用方法 | 高振宇 |
[TOC]
1. 接口介绍
/**
* @brief 计算振动抑制整形后的离线轨迹
* @param level: 振动抑制等级(1~3), 等级越高抑制效果越明显响应速度相应变慢
* @param calib_traj: 辨识轨迹, 具体为实际速度、参考位置、速度、加速度
* @param shape_traj: 整形轨迹, 具体为指令位置、指令速度
* @return if < 0 计算失败
*/
ARAL_API_COMMON(1.0) int mcCalVibSuppressShapeTraj(const int& level, const DoubleVecVec& calib_traj, DoubleVecVec& shape_traj) = 0;
适用范围:
- 目前支持关节空间轨迹整形,输出的也是关节空间指令(笛卡尔空间轨迹整形后续支持)
- 对参考速度要求有稳态段,
2. 使用步骤
S1:真机运行辨识轨迹,采集存储实际速度、参考位置、速度、加速度(规划器给出)数据
S2:调用mcCalVibSuppressShapeTraj
接口输入S1存储的数据,计算整形后的轨迹并存储
S3:真机离线运行S2输出的整形轨迹
示例
TEST_FIXTURE(AuboRobotInterface, testmcCalVibSuppressShapeTraj)
{
Setup("aubo_i5");
S1: //! 数据读取
interface::DoubleVecVec calib_data, shape_data;
ReadFromFile2D("./test/data/control/calib_data.csv", ",", calib_data); // cur_vel, ref_pos, ref_vel, ref_acc
S2: //! 计算输出
int N = calib_data.size();
const int& dof = robot->mdlGetRobotDOF();
interface::DoubleVecVec input(N), output(N);
for (int i = 0; i < N; i++)
{
input[i].resize(4 * dof);
for (int j = 0; j < dof; j++)
{
input[i][j] = calib_data[i][j];
input[i][j + dof] = calib_data[i][j + dof];
input[i][j + dof * 2] = calib_data[i][j + dof * 2];
input[i][j + dof * 3] = calib_data[i][j + dof * 3];
}
}
robot->mcCalVibSuppressShapeTraj(3, input, output);
S3: //! 存储整形轨迹
WriteToFile2D(output, "build/shape_traj.offt");